home *** CD-ROM | disk | FTP | other *** search
- /* Quick reference card printer */
-
- #include "kernel.h"
- #include <stdlib.h>
-
- #include "DeskLib:Wimp.h"
- #include "DeskLib:WimpSWIs.h"
- #include "DeskLib:Event.h"
- #include "DeskLib:Template.h"
- #include "DeskLib:Window.h"
- #include "DeskLib:PDriver.h"
- #include "DeskLib:Resource.h"
- #include "DeskLib:Hourglass.h"
- #include "DeskLib:Handler.h"
- #include "DeskLib:File.h"
-
- #define DrawFile_Render 0x45540
-
- window_handle WHandle;
- void *DrawFile;
- int FileSize;
-
- void QuickRefs_Initialise(void);
- BOOL QuickRefs_PrintButton(event_pollblock *,void *);
- BOOL QuickRefs_Close(event_pollblock *,void *);
-
- int main()
- {
- QuickRefs_Initialise();
-
- for(;;)
- Event_Poll();
-
- return(0);
- }
-
- void QuickRefs_Initialise(void)
- {
- _kernel_swi_regs sr;
- char name[]="<QuickRefs$Dir>.RefCard";
- file_handle f;
-
- Resource_Initialise("QuickRefs");
- Event_Initialise3("QuickRefs",310,0);
- Template_Initialise();
- Template_LoadFile("Templates");
-
- if(PDriver_PrinterName()==NULL)
- Error_ReportFatal(123,"Configure a RISC OS printer driver before running !QuickRefs");
-
- WHandle=Window_CreateAndShow("quickrefs",0,open_WHEREVER);
- Event_Claim(event_OPEN,WHandle,event_ANY,Handler_OpenWindow,0);
- Event_Claim(event_CLICK,WHandle,0,QuickRefs_PrintButton,0);
- Event_Claim(event_CLOSE,WHandle,event_ANY,QuickRefs_Close,0);
-
- sr.r[0]=5;
- sr.r[1]=(int)name;
- _kernel_swi(8,&sr,&sr);
- FileSize=sr.r[4];
- DrawFile=malloc(FileSize);
- f=File_Open(name,file_READ);
- File_ReadBytes(f,DrawFile,FileSize);
- File_Close(f);
- }
-
- BOOL QuickRefs_Close(event_pollblock *pb,void *ref)
- {
- pb=pb; ref=ref;
-
- exit(0);
-
- return TRUE;
- }
-
- BOOL QuickRefs_PrintButton(event_pollblock *pb,void *ref)
- {
- file_handle PrintJob=File_Open("printer:",file_WRITE);
- print_job OldJob;
- wimp_rect printrect;
- print_transformation pt;
- wimp_point position;
- BOOL more;
- int id;
- wimp_rect printable;
- wimp_point psize;
- _kernel_swi_regs sr;
-
- pb=pb; ref=ref;
-
- Hourglass_On();
-
- PDriver_SelectJob((print_job)PrintJob,"Quick referance card",&OldJob);
- PDriver_PageSize(&psize,&printable);
-
- /*
-
- printrect.min.x=printable.min.x/400;
- printrect.min.y=printable.min.y/400;
- printrect.max.x=printable.max.x/400;
- printrect.max.y=printable.max.y/400;
-
- */
-
- printrect.min.x=0 /* printable.min.x/400 */;
- printrect.min.y=0 /* printable.min.y/400 */;
- printrect.max.x=(printable.max.x-printable.min.x)/400;
- printrect.max.y=(printable.max.y-printable.min.y)/400;
-
- pt.xx=1<<16;
- pt.xy=0;
- pt.yx=0;
- pt.yy=1<<16;
-
- position.x= printable.min.x /* 0*72000 */;
- position.y= printable.min.y /* 0*72000 */;
-
- PDriver_GiveRectangle(1,&printrect,&pt,&position,0xffffff00);
-
- PDriver_DrawPage(1,&printrect,0,0,&more,&id);
- more=abs(more);
- while(more!=0) {
- sr.r[0]=0;
- sr.r[1]=(int)DrawFile;
- sr.r[2]=FileSize;
- sr.r[3]=0;
- sr.r[4]=(int)(&printrect);
- _kernel_swi(DrawFile_Render,&sr,&sr);
- PDriver_GetRectangle(&printrect,&more,&id);
- more=abs(more);
- }
-
- PDriver_EndJob((print_job)PrintJob);
- File_Close(PrintJob);
-
- Hourglass_Off();
-
- return TRUE;
- }
-